Skip to content

Conversation

@justinmk3
Copy link
Contributor

Problem

Misleading log message when a setting returns null, even if the caller specified defaultValue:

[error] Settings (amazonQ): failed to read "workspaceIndexCacheDirPath":
Unexpected type cast: got object, expected primitive String

cast() considers null to be "object" type, which is misleading. If the caller passed a defaultValue, they have intentionally opted-in to ignoring this situation, and don't want this kind of log message.

Solution

If a setting returns null|undefined, skip cast() and return defaultValue immediately. Don't log an error message.


  • Treat all work as PUBLIC. Private feature/x branches will not be squash-merged at release time.
  • Your code changes must meet the guidelines in CONTRIBUTING.md.
  • License: I confirm that my contribution is made under the terms of the Apache 2.0 license.

Problem:
Misleading log message when a setting returns `null`, even if the caller
specified `defaultValue`:

    [error] Settings (amazonQ): failed to read "workspaceIndexCacheDirPath":
    Unexpected type cast: got object, expected primitive String

`cast()` considers `null` to be "object" type, which is misleading. If
the caller passed a `defaultValue`, they have intentionally opted-in to
ignoring this situation, and *don't* want this kind of log message.

Solution:
If a setting returns `null|undefined`, skip `cast()` and return
`defaultValue` immediately. Don't log an error message.
@justinmk3 justinmk3 requested a review from a team as a code owner May 6, 2025 20:04
@github-actions
Copy link

github-actions bot commented May 6, 2025

  • This pull request modifies code in src/* but no tests were added/updated.
    • Confirm whether tests should be added or ensure the PR description explains why tests are not required.
  • This pull request implements a feat or fix, so it must include a changelog entry (unless the fix is for an unreleased feature). Review the changelog guidelines.
    • Note: beta or "experiment" features that have active users should announce fixes in the changelog.
    • If this is not a feature or fix, use an appropriate type from the title guidelines. For example, telemetry-only changes should use the telemetry type.

const value = this.#config.get(key, defaultValue)

if (defaultValue !== undefined && (value === undefined || value === null)) {
return defaultValue
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

test coverage:

assert.strictEqual(sut.get(testSetting, Boolean, true), true)

Copy link
Contributor

@Hweinstock Hweinstock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

@justinmk3 justinmk3 merged commit 0acb7ae into aws:master May 6, 2025
29 of 31 checks passed
@justinmk3 justinmk3 deleted the fixlogs branch May 6, 2025 21:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants